package modelo;

import java.util.List;
import java.util.ArrayList;
import java.sql.ResultSet;

public class ClienteDao 
{
	public boolean registrarCliente(Cliente cliente) throws Exception
	{
		String tiraSQL="insert into \"CLIENTES\" " + 
		               "(cod_cliente,nombre,direccion,telefono,status) " + 
		               "values ('" + 
		                cliente.getCodCliente() + 
		                "','" + cliente.getNombre() + "','" + 
		                cliente.getDireccion() + "','" + 
		                cliente.getTelefono() + "','A')";
		
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public boolean activarCliente(Cliente cliente) throws Exception
	{
		String tiraSQL= "update \"CLIENTES\" set status='A' where cod_cliente='" + cliente.getCodCliente() + "'";
        
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public boolean eliminarCliente(Cliente cliente) throws Exception
	{
		String tiraSQL= "update \"CLIENTES\" set status='E' where cod_cliente='" + cliente.getCodCliente() + "'";
        
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public boolean actualizarCliente(Cliente cliente) throws Exception
	{
		String tiraSQL= "update \"CLIENTES\" set " +
	                    "nombre='" + cliente.getNombre() + "'," +
	                    "direccion='"+ cliente.getDireccion() + "'," + 
	                    "telefono='" + cliente.getTelefono() +  "' " +
	                    "where cod_cliente='" + cliente.getCodCliente() + "' and status!='E'";
		
		boolean ejecutado=Conexion.ejecutarDML(tiraSQL);
		
		return ejecutado;
	}
	
	public List<Cliente> consultarClientesActivos() throws Exception
	{
		ArrayList<Cliente> clientes= new ArrayList<Cliente>();
		
		String tiraSQL= "select * from \"CLIENTES\" where status='A'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		String codigo="",nombre="",direccion="",telefono="";
		
		while(rs.next())
		{
			codigo= rs.getString("cod_cliente");
			nombre= rs.getString("nombre");
			direccion= rs.getString("direccion");
			telefono= rs.getString("telefono");
			
			
			clientes.add(new Cliente(codigo,nombre,direccion,telefono));
		}			
		
		return clientes;
	}
	
	
	public boolean isEliminado(Cliente cliente) throws Exception
	{
        boolean seEncuentra= false;
		
		String tiraSQL= "select cod_cliente,nombre,direccion,telefono" +
        " from \"CLIENTES\" where cod_cliente='" + cliente.getCodCliente() + 
        "' and status='E'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{	
			seEncuentra= true;
			
			String nombre="",direccion="",telefono="";
			
			cliente.setNombre(nombre);
			cliente.setDireccion(direccion);
			cliente.setTelefono(telefono);
		}
		
		return seEncuentra;
	}
	
	public boolean consultarCliente(Cliente cliente) throws Exception
	{
		boolean seEncuentra= false;
		
		String tiraSQL= "select cod_cliente,nombre,direccion,telefono" +
        " from \"CLIENTES\" where cod_cliente='" + cliente.getCodCliente() + 
        "' and status='A'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{	
			seEncuentra= true;
			
		}
		
		return seEncuentra;
	}
	
	public Cliente getCliente(String codigo) throws Exception
	{
		Cliente cliente= null;
		
		String tiraSQL= "select cod_cliente,nombre,direccion,telefono" +
        " from \"CLIENTES\" where cod_cliente='" + codigo + 
        "' and status='A'";
		
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{	
			cliente = new Cliente(rs.getString("cod_cliente"),rs.getString("nombre"),
					rs.getString("direccion"),rs.getString("telefono"));
			
			
		}
		
		return cliente;
	}
	
	public boolean isDependiente(Cliente cliente) throws Exception
	{
		boolean dependiente= false;
		
		String tiraSQL= "select \"CLIENTES\".cod_cliente from \"CLIENTES\",\"VENTAS\",\"VENTAS_DETALLES\" " +
				        "where \"CLIENTES\".cod_cliente='" + cliente.getCodCliente() + 
				        "' and \"CLIENTES\".cod_cliente=\"VENTAS\".cod_cliente " +
				        "and  \"VENTAS_DETALLES\".cod_venta=\"VENTAS\".cod_venta and " +
				        " \"CLIENTES\".status='A' and \"VENTAS\".status='A' and \"VENTAS_DETALLES\".status='A'";
		
        ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		{	
			dependiente= true;
			
		}
		
		return dependiente;
	}

}
